package com.cskaoyan.javase.oop2._1extends._11final._3variable._1local;

/**
 * 我们以方法中的局部变量为例子，方法中的局部位置有两个：
 *      1.方法体：
 *          方法体中用final修饰局部变量，表示该变量一旦声明并初始化赋值，就不可再修改它的取值了。语法上，直接使用final修饰即可。
 *
 *      2.方法的形参列表中：
 *          形参用final修饰后，不是表示该方法只能传入常量，而是实参一旦传入后就无法在方法体中修改了。
 *      语法上，直接使用final修饰即可。
 *   注：final修饰局部变量后，会变成一个局部常量。仍然在方法栈帧中创建存储，随着方法同生共死，除了值不能变，没有其它区别。
 *
 *
 *
 * @since 10:21
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        final int num = 100;
        System.out.println(num);
        int result = num + 10;
        // num++;

        test(10);
        int a = 10;
        test(a);
        System.out.println("-------------------");
        final Student s = new Student(18);
        // Cannot assign a value to final variable 's'
        // s = new Student(81);
        s.age = 81;
        System.out.println(s.age);
        // final new Student(88);
    }

    public static void test(final int num) {
        System.out.println(num);
        // num++;
    }

}

class Student {
    int age;

    public Student(int age) {
        this.age = age;
    }
}
